home *** CD-ROM | disk | FTP | other *** search
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Fasterfox.
- *
- * The Initial Developer of the Original Code is
- * Tony Gentilcore.
- * Portions created by the Initial Developer are Copyright (C) 2005
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * See readme.txt
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- var PreferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
-
- // create arrays of the form elements for use in the code below
- var _elementIDs = ["ff_presets", "ff_enhancedPrefetching", "ff_pageLoadTimer", "ff_whitelist",
- "ff_pipelining", "ff_pipeliningFirstRequest", "ff_proxyPipelining", "ff_cacheMemoryCapacity",
- "ff_cacheDiskCapacity", "ff_maxConnections", "ff_maxConnectionsPerServer", "ff_maxPersistentConnectionsPerServer",
- "ff_maxPersistentConnectionsPerProxy","ff_maxPipeliningRequests", "ff_initialPaintDelay", "ff_disablePluginPopups",
- "ff_dnsCacheExpiration", "ff_dnsCacheEntries", "ff_uiSubmenuDelay", "ff_fastBack"];
-
- // Presets: [Default, Courteous, Optimized, Turbo Charged]
- // ff_presets[n] corresponds to _elementIDs[n+4]
- var ff_presets = new Array([false, false, true, true], [false, false, true, true], [false, false, true, true], [-1, 65536, 65536, 65536],
- [50000, 76800, 76800, 76800], [24, 24, 40, 48], [8, 8, 16, 24], [2, 2, 6, 8],
- [4, 4, 12, 16], [4, 4, 6, 8], [250, 0, 0, 0], [0, 2, 2, 2],
- [60, 3600, 3600, 3600], [20, 512, 512, 512], [300, 50, 50, 50], [0, 5, 5, 5]);
-
- /*
- * Runs when the preferences window loads
- */
- function FF_windowOnLoad() {
-
- // load the preferences
- FF_loadPrefs();
-
- // show or hide the tabs based on whether custom is selected
- var mruTab = PreferencesService.getIntPref("extensions.fasterfox.lastTab", 0);
- if(PreferencesService.getIntPref("extensions.fasterfox.preset", 3) == 4) {
- FF_displayTabs(true);
- } else {
- FF_displayTabs(false);
- mruTab = (mruTab>1) ? 1 : mruTab;
- }
- document.getElementById("ff_tabs").selectedIndex = mruTab;
- }
-
- /*
- * save all preferences
- */
- function FF_onOK() {
-
- // save the most recently viewed tab
- try {
- PreferencesService.setIntPref("extensions.fasterfox.lastTab", document.getElementById("ff_tabs").selectedIndex);
- } catch(e){}
-
- // save all the prefs
- FF_savePrefs();
- }
-
- function FF_loadPrefs() {
- var i, element, prefstring, preftype;
- // Iterate through all elements and load their value from the prefs
- for (i = 0; i < _elementIDs.length; i++) {
- element = document.getElementById(_elementIDs[i]);
- prefstring = element.getAttribute("prefstring");
- preftype = element.getAttribute("preftype");
- if (preftype == "bool") {
- element.checked = PreferencesService.getBoolPref(prefstring);
- } else if (preftype == "char") {
- element.value = PreferencesService.getCharPref(prefstring);
- } else if (preftype == "int" &&
- _elementIDs[i] != "ff_presets") {
- element.value = PreferencesService.getIntPref(prefstring);
- } else if (_elementIDs[i] == "ff_presets") {
- element.selectedIndex = PreferencesService.getIntPref(prefstring);
- }
- }
-
- // set the custom form elements
- FF_setSpecialElements();
- }
-
- function FF_savePrefs() {
- var i, element, prefstring, preftype;
- // Iterate through all elements and load their value from the prefs
- for (i = 0; i < _elementIDs.length; i++) {
- element = document.getElementById(_elementIDs[i]);
- prefstring = element.getAttribute("prefstring");
- preftype = element.getAttribute("preftype");
- if (preftype == "bool") {
- PreferencesService.setBoolPref(prefstring, element.checked);
- } else if (preftype == "char") {
- PreferencesService.setCharPref(prefstring, element.value);
- } else if (preftype == "int") {
- PreferencesService.setIntPref(prefstring, element.value);
- }
- }
- }
-
- function FF_setPreset(presetNumber) {
- var i, element;
- // Set the form elements to the proper preset
- for (i = 0; i < ff_presets.length; i++) {
- element = document.getElementById(_elementIDs[i+4]);
- preftype = element.getAttribute("preftype");
- if (preftype == "bool") {
- element.checked = ff_presets[i][presetNumber];
- } else if (preftype == "char" ||
- preftype == "int") {
- element.value = ff_presets[i][presetNumber];
- }
- }
- // set the custom form elements
- FF_setSpecialElements();
- }
-
- function FF_setSpecialElements() {
-
- // set the state of the disabled popups checkbox based on the int value of the pref
- if(document.getElementById("ff_disablePluginPopups").value==2) {
- document.getElementById("ff_disablePluginPopupsCheckbox").checked=true;
- } else {
- document.getElementById("ff_disablePluginPopupsCheckbox").checked=false;
- }
-
- // populate the whitelist listbox
- var listbox = document.getElementById("ff_whitelistbox");
- while (listbox.getRowCount()>=1) listbox.removeItemAt(listbox.getIndexOfItem(0));
- var whitelist = document.getElementById("ff_whitelist").value;
- if(whitelist.length>0) {
- whitelist = whitelist.split(",");
- for(i=0; i<whitelist.length; i++) {
- listbox.appendItem(whitelist[i], whitelist[i]);
- }
- }
-
- // enable or disable the whitelist
- FF_disableWhitelist(!document.getElementById("ff_enhancedPrefetching").checked);
-
- // set the state of the fastback checkbox based on the int value of the pref
- if(document.getElementById("ff_fastBack").value>0) {
- document.getElementById("ff_fastBackCheckbox").checked=true;
- } else {
- document.getElementById("ff_fastBackCheckbox").checked=false;
- }
-
- // enable or disable the fastback textbox
- FF_disableFastBack(!document.getElementById("ff_fastBackCheckbox").checked);
- }
-
- function FF_onAdd() {
- var i, listbox = document.getElementById("ff_whitelistbox");
- var addMe = document.getElementById("ff_addtxt").value;
-
- if(addMe.length > 0) {
- for (i=0; i<=listbox.getRowCount(); i++) {
- if(i>=listbox.getRowCount()) {
- listbox.appendItem(addMe, addMe);
- break;
- } else if (addMe <= listbox.getItemAtIndex(i).value) {
- listbox.insertItemAt(i, addMe, addMe);
- break;
- }
-
- }
- document.getElementById("ff_addtxt").value = "";
- }
- FF_updateWhitelist();
- }
-
- function FF_onRemove() {
- var removeMe = document.getElementById("ff_whitelistbox").selectedIndex;
- if(removeMe >= 0) {
- document.getElementById("ff_whitelistbox").removeItemAt(removeMe);
- document.getElementById("ff_rmvbtn").disabled = "true";
- }
- FF_updateWhitelist();
- }
-
- function FF_updateWhitelist() {
- var listbox = document.getElementById("ff_whitelistbox");
- var i, whitelist = "";
- for (i=0; i<listbox.getRowCount(); i++) {
- whitelist += listbox.getItemAtIndex(i).value + ",";
- }
- whitelist = whitelist.substring(0, whitelist.length-1);
- document.getElementById("ff_whitelist").value = whitelist;
- }
-
- /*
- * Accepts a boolean value which determines whether
- * all tabs should be shown or hidden
- *
- * true = display all tabs
- * false = hide all tabs
- */
- function FF_displayTabs(show) {
-
- // hide or show the tabs
- document.getElementById("ff_Cache_tab").setAttribute("collapsed", !show);
- document.getElementById("ff_Connection_tab").setAttribute("collapsed", !show);
- document.getElementById("ff_Pipelining_tab").setAttribute("collapsed", !show);
- document.getElementById("ff_Rendering_tab").setAttribute("collapsed", !show);
- document.getElementById("ff_Popups_tab").setAttribute("collapsed", !show);
- }
-
- /*
- * Accepts a boolean value which determines whether
- * the whitelist prefs should be shown
- *
- * true = disable prefs
- * false = enable prefs
- */
- function FF_disableWhitelist(disable) {
- if(!disable) {
- document.getElementById("ff_whitelistbox").disabled = "";
- document.getElementById("ff_addtxt").disabled = "";
- document.getElementById("ff_addbtn").disabled = "";
- document.getElementById("ff_rmvbtn").disabled = "true";
- } else {
- document.getElementById("ff_whitelistbox").clearSelection();
- document.getElementById("ff_whitelistbox").disabled = "true";
- document.getElementById("ff_addtxt").disabled = "true";
- document.getElementById("ff_addbtn").disabled = "true";
- document.getElementById("ff_rmvbtn").disabled = "true";
- }
- }
-
- /*
- * Accepts a boolean value which determines whether
- * the fastback prefs should be shown
- *
- * true = disable prefs
- * false = enable prefs
- */
- function FF_disableFastBack(disable) {
- if(!disable) {
- document.getElementById("ff_fastBack").disabled = "";
- } else {
- document.getElementById("ff_fastBack").disabled = "true";
- }
- }